package com.learn.springbootnetty.tcpdemo.线程池版;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.*;

/**
 利用TCP协议,负责接收数据
 */
public class Server {
    public static void main(String[] args) throws IOException {
          /*
            上传文件
            客户端:将本地文件上传到服务器,接收服务器的反馈
            服务器:接收客户端上传的文件,上传完毕之后给出反馈
         */
        // 创建线程池对象
        ExecutorService pool = new ThreadPoolExecutor(
                3,// 核心线程数量
                6, // 最大线程数量
                60, // 空闲线程的存活时间
                TimeUnit.SECONDS, // 存活时间单位
                new ArrayBlockingQueue<>(3), // 任务的阻塞队列
                Executors.defaultThreadFactory(), // 线程的创建工厂
                new ThreadPoolExecutor.AbortPolicy()); // 任务的拒绝策略
        // 1.创建服务器端的ServerSocket对象并绑定客户端连接的端口
        ServerSocket ss = new ServerSocket(10087);
        while (true) {
            // 2.监听客户端连接:等待客户端来连接
            Socket socket = ss.accept();

            // 开启一条线程
            // 一个用户就对应服务端的一条线程
//            new Thread(new MyRunnable(socket)).start();
            pool.execute(new MyRunnable(socket));
        }
        // 关闭服务器
//        ss.close();
    }
}